![[리포트] S3, 넌 이것까지 할 수 있네(Amazon S3 신규 기능 소개) #AWS #Summit #S3](https://devio2023-media.developers.io/wp-content/uploads/2020/05/2020-aws-summit-online-korea.png)
[리포트] S3, 넌 이것까지 할 수 있네(Amazon S3 신규 기능 소개) #AWS #Summit #S3
시작하며
안녕하세요~! Classmethod 주식회사의 신입 엔지니어 임홍기라고 합니다!
이전 리포트에 이어서 세션 리포트를 작성해 보았습니다.
한국 엔지니어분들이 여러 세션의 리포트를 작성하고 있으니 흥미 있으시다면 부디 다른 리포트도 읽어보세요!
2020.05.13(수) AWS Summit Online Korea가 개최되었습니다.
금일 스트리밍했던 강연은 온디멘드 형식으로 올해 8월까지 공개하므로 언제든지 필요한 세션을 볼 수 있습니다. (단, AWSome Day는 5월 24일 까지) 세션은 강연 일정표를 통해 자세한 내용을 확인할 수 있습니다.
접수 못 하신 분들은 강연 영상 다시보기 에서 등록 후 강연을 시청할 수 있습니다.
본 포스트에서는 기술 트랙 1번의 [S3, 넌 이것까지 할 수 있네(Amazon S3 신규 기능 소개)] 세션을 포스팅하고 있습니다. 포스트에서 사용된 해당 세션의 PPT 자료는 PDF 자료를 읽어주세요!
잘 부탁드리겠습니다!
Speaker
김세준 님 - AWS 솔루션즈 아키텍트
Agenda
- 비용 절감
- 보안 및 접근
- 데이터 관리
이번 세션에서 소개된 S3의 신규 기능은 크게 9가지 이며 위의 3가지 카테고리로 나누어 설명합니다.
비용 절감
(S3의 스토리지 클래스)
비용 절감에서는 가장 최근에 나온 S3 Intelligent-Tiering과 S3 Glacier Deep Archive에 대해 다룹니다.
최신 스토리지 클래스
- S3 Intelligent-Tiering은 S3에 있는 데이터를 사용자 대신 자동으로 비용을 최적화 함으로써 스토리지 관리기능에 혁신을 제공해주고
- S3 Glacier Deep Archive는 가장 저렴한 스토리지 클래스로서, 클라우드 스토리지 비용을 혁신시켜줍니다.
Glacier Deep Archive란? (NEW 2019년 3월에 출시)
Amazon S3에서 가장 저렴한 비용의 스토리지 클래스이며 1년에 한두 번 정도 액세스할 수 있는 데이터의 장기 보관 및 디지털 보존을 지원합니다.
- 중요하지만 자주 액세스되지 않는 데이터를 보다 더 경제적으로 Amazon S3에 저장할 수 있는 새로운 장기 보관용 스토리지 클래스
- 스토리지 클래스 분석, 객체 태그 지정, 객체 잠금 및 교차 리전 복제 등의 다른 S3 기능도 사용할 수 있다.
Glacier Deep Archive의 특징
- GB당 $0.002/월의 저렴한 스토리지
- 테이프 백업과 비교 했을 때, 카트리지나 라바의 관리가 불필요하다.
- 모든 작업은 S3 콘솔과 AWS API를 통해 이루어지며, 11 9's(99.999999999%)의 높은 내구성을 가진다.
- 12시간 내에 S3로 데이터를 복구할 수 있다.
Glacier와 Glacier Deep Archive의 비교
S3 Glacier | S3 Glacier Deep Archive | |
---|---|---|
비용 | GB 당 * $0.005 / 월 | GB 당 * $0.002 / 월 |
검색 시간 | 긴급: 1-5분, 표준: 3-5 시간, 대량: 5-12 시간 | 표준: 12 시간, 대량: 48 시간 |
최소 저장 기간 | 90일 | 180일 |
- 비용 면에서는 Glacier가 비싸지만, 검색 시간 면에서는 Glacier Deep Archive보다 빠르다.
- 저장해야 하는 데이터 기간이 180일 이상이고 12시간 이상의 복구 시간 RTO(Recovery Time Objective)를 허용할 수 있다면 Glacier Deep Archive의 사용이 더욱 저렴합니다.
S3 Intelligent-Tiering란? (re:Invent 2018 발표)
이 스토리지 클래스는 수명이 길고 액세스 패턴을 알 수 없거나 예측할 수 없는 데이터에 이상적이며, 성능 영향 또는 운영 오버헤드 없이 가장 비용 효과적인 액세스 계층으로 데이터를 자동으로 이동하여 비용을 최적화하기 위해 설계되었습니다.
S3 Intelligent-Tiering의 특징
- 알 수 없거나 변화하는 액세스의 경우 주로 사용
- 두 개의 액세스 계층에 저장하여 작동하며, 액세스 패턴 변화를 기반으로 두 개의 액세스 계층 간에 객체를 자동으로 이동
- 하나의 계층은 빈번한 액세스에 맞게 최적화되며, 또 다른 하나의 계층은 빈번하지 않은 액세스에 맞게 최적화된다.
Intelligent-Tiering의 목적
- 아래와 같이 이전에는 데이터 액세스 패턴에 따라 3가지 스토리지 클래스로 구축했습니다.
- 데이터 액세스 패턴이 가능한 경우 : 수명 주기 정책을 사용하여 비용을 절감
이점 : 수명 주기 정책을 사용하면 설정한 기간에 따라 데이터를 자동으로 다른 클래스를 자동으로 이동시킬 수 있다.
하지만 새로운 애플리케이션을 개발했을 때 액세스 패턴을 정의하는 것은 매우 어려운 일입니다.
그래서 자동으로 비용을 최적화하는 Intelligent-Tiering S3 클래스가 출시되었습니다.
S3 Intelligent-Tiering의 동작 원리
- PUT의 선택적 플래그를 사용하거나 수명 주기 정책을 사용하여 S3 Intelligent-Tiering에 객체 배치
- 객체는 처음 30일 동안 Frequent Access 계층으로 분류됨
- 30일 동안 객체에 액세스하지 않으면 자동으로 Infrequent Access 계층으로 분류됨
- Infrequent Access 계층의 객체에 액세스하면 다시 30일 동안 자동으로 Frequent Access로 재분류 됨
이 4가지 과정은 데이터가 존재하는 한 계속 반복되며, 패턴이 변경된다고 해도 성능, 운영 오버헤드, 검색 비용에는 변화가 없는 것이 특징입니다.
S3 Inventory를 이용한 Intelligent-Tiering 접근 분석(NEW)
- S3 Inventory Report(2019년 10월에 출시)를 사용하면 저장된 객체의 액세스 계층을 확인할 수 있다.
- 매일, 매주 단위로 버킷에 있는 모든 객체에 대해 메타 정보를 생성함
- 옵션 필드에서 Intelligent-Tiering을 활성화 하게 되면, Athena를 사용해서 간단한 쿼리만으로 객체에 대한 액세스 계층을 확인할 수 있다.
비용 절감 요약
- 가장 저렴한 클래스 - S3 Glacier Deep Archive
- 액세스 패턴에 따른 계층 분류 - S3 Intelligent-Tiering
- 버킷에 저장된 객체의 메타정보를 제공 - Access tiers in inventory reports
보안 및 접근
Block Public Access란? (re:Invent 2018 발표)
버킷과 객체를 더욱더 쉽게 보호할 수 있습니다. 이 기능은 계정 수준뿐 아니라 추후 생성하게 될 버킷을 비롯한 개별 버킷에서 작동하는 새로운 차원의 보호 기능을 제공합니다. AWS의 목표는 퍼블릭 액세스는 웹 호스팅에 사용되어야 함을 명확히 하는 데 있습니다!
- 우발적인 공개 액세스를 사전 차단
- 계정 또는 버킷 레벨 차단
- ACL 액세스, 버킷 정책 액세스 또는 둘 다 적용 가능
또한 선택적으로 ACL 및 버킷 정책을 사용하여 다른 계정에 액세스 권한을 부여하는 것도 가능합니다. 자세한 내용은 퍼블릭 액세스 차단에서 확인할 수 있습니다.
Access Analyzer for Amazon S3(NEW)
Block Public Access를 적용하기 전에 버킷 액세스에 대한 정확한 분석이 필요합니다.
그래서 이번 re:Invent 2019에서 Access Analyzer for S3 기능이 나왔습니다.
- 공유 액세스를 위한 버킷 모니터링 서비스
- S3 콘솔에서 추가 비용 없이 퍼블릭 및 다른 계정에 공유된 버킷들에 대한 명세를 확인할 수 있습니다.
- 기능
- ACL 혹은 버킷 정책을 통한 퍼블릭 액세스가 허용된 리스트를 확인할 수 있다.
- 퍼블릭 액세스가 허용된 버킷이 있는 경우 분석된 결과를 저장할 수 있다.
- 퍼블릭 액세스가 불필요하다고 판단 시 클릭 한 번으로 차단할 수 있다.
- 감사를 위해 결과를 CSV 형태로 다운로드할 수 있다.
Amazon S3 Access Points란? (NEW)
Amazon S3의 공유 데이터 세트에 대한 대규모의 데이터 액세스 관리를 간소화하는 새로운 S3 기능입니다. S3 액세스 포인트를 사용하면 버킷당 수백 개의 액세스 포인트를 손쉽게 생성할 수 있으며, 각 포인트에는 애플리케이션에 대해 사용자 지정된 이름과 사용 권한이 부여됩니다.
위와 같이 여러 그룹에서 버킷에 데이터를 액세스한다고 가정했을 때 각 그룹에 맞게 네임스페이스나 액세스 포인트, 권한을 설정하는 등의 관리작업이 필요합니다.
Access Points는 위와 같은 예 또는 문제 케이스에 대해 해결책을 제시합니다.
- 다양한 그룹에서 요건에 맞게 공유 버킷에 접근할 수 있도록 관리기능을 제공
- 버킷의 이름은 버킷 액세스 네임이 겹치지 않도록 새로운 네임 스페이스를 설정
- 특정 트래픽을 특정 VPC로 제한할 수 있다.
구현 방법
현재 - 공유 버킷에 대한 액세스 관리 : 데이터 레이크
- 다양한 데이터를 공유 버킷에 저장하게 되면 데이터 분석을 위해서는 매우 효과적이지만, 소스가 다양해지고 방대해짐에 따라서 관리가 힘들어진다.
- 또한 시스템에 문제가 발생했을 시에 많은 범위에 영향을 끼칠 수 있다.
Access Points - 공유 버킷에 대한 액세스 관리 : 데이터 레이트
- Access Points를 사용하게 되면 모든 데이터 경로 및 그룹별로 Access Point를 관리 및 정책을 할당할 수 있다.
- 위와 같이 5개의 경로에 Access Point를 가지고 각각의 정책에 의해 특정 prefix 및 tag에 맞는 객체에 대한 액세스 권한을 갖는다.
- 제거하고 싶은 경로가 생기면 해당 부분만 제거할 수도 있다. 이 경우 버킷에 대한 정보를 잃어서 데이터를 보낼 수 없지만, S3는 변경할 필요가 없다.
계정 및 지역 네임스페이스 규칙
- Name : 액세스 포인트의 이름
- AWS account : 계정 번호
- New subdomain : 액세스 포인트를 확인할 수 있는 서브 도메인
이점
- 동일한 액세스 포인트 네임을 여러 리전에서 사용할 수 있어 글로벌 애플리케이션에 용이하다.
- 위의 규칙을 적용하기 때문에 원하는 이름으로 생성할 수 있다.
- 계정 당 최대 1,000개의 액세스 포인트를 만들 수 있다.
VPC 바인딩
특정 트래픽에 대해서 해당하는 액세스 포인트를 VPC 엔드포인트로 제한할 수 있습니다.
VPC 엔드포인트 정책과 동시에 적용하는 것으로 양방향 제어도 가능하다.
Amazon S3 Access Points 요약
- 접근 대상을 여러 그룹으로 세분화 할 수 있다.
- 그룹별로 액세스 포인트를 만들 수 있다. (계정 및 리전 액세스 포인트를 VPC로 바인딩 할 수 있음)
- 액세스 포인트별로 정책을 적용할 수 있다. (액세스 포인트를 사용하는 그룹 권한 및 액세스 설정 가능)
- 중앙 집중식 제어 유지 : 복제, 암호화와 같은 데이터 관리 작업은 중앙에서 이루어 지는 것이 가장 큰 이점
Access Point 설정 방법
버킷 콘솔에 위와 같은 새 탭이 생겼습니다.
Access points 탭에서 만들 수 있으며 Use this access point를 누르면
액세스 포인트를 통해 들어오는 것처럼 데이터를 확인할 수 있습니다.
데이터 관리
S3 Batch Operations
객체의 변환 작업을 처리하기 위해 이전에는 EC2에서 데이터를 변환해서 S3로 업로드 하는 등의 애플리케이션 코드를 별도로 작성해야 했습니다.
Batch Operations 기능을 이용하면 배치작업을 더욱 간단하게 구현할 수 있습니다.
(간단하게 처리할 수 있는 작업들)
대규모 관리
아래와 같이 S3 콘솔에서 배치 작업을 정의하고 결과를 확인할 수 있습니다.
또한 아래와 같이 완료 보고서를 요청할 수도 있으며,
요청하지 않더라도 CloudWatch나 CloudTrail을 사용하여 작업을 모니터링할 수도 있습니다.
S3 Replication
이전까지는 한 리전에서 다른 리전으로의 복제를 할 수 있었습니다.
최근에 compliance와 legal 준수를 위해서 3가지 기능을 업데이트했습니다.
Same-Region replication
(동일 리전 간의 복제기능)
동일 리전 간 복제의 UseCase
- 백업 UseCase : 소스 버킷의 객체를 백업 계정에 있는 버킷에 복제 후, 소유권을 변경하고, 객체 Lock까지 설정 -> 운영 계정의 데이터가 삭제되더라도 백업 계정의 버킷의 데이터는 여전히 보관 됩니다.
- 설정 예시
위와 같이 객체 잠금 및 보존 기간을 설정하여 여러 리전에 복제할 수 있습니다.
이 기능은 규정 준수 및 삭제 보호를 위한 데이터 보호 시나리오에서 매우 유용합니다.
- 로그 UseCase : 여러 애플리케이션에서 생성된 로그를 수집한 뒤 하나의 버킷에서 로그 분석을 실행 -> 단일 버킷에서 모든 로그에 대한 로그를 분석할 수 있다.
Amazon S3 Replication Time Control(new)
Replication Time Control(RTC)은 S3에 업로드하는 대부분의 객체를 몇 초 만에 복제하고 이러한 객체의 99.99%를 15분 이내에 복제합니다.
자세한 내용은 S3 Replication Time Control (S3 RTC)를 사용하여 객체 복제를 확인해 주세요.
설정 방법
S3 콘솔의 Replication rule에서 Replication Time Control을 활성화하는 것만으로 적용이 가능합니다.
위와 같이 활성화하면 15분 이내에 99.9%의 객체를 복제할 것을 약정하는
SLA(서비스 수준 계약)가 지원됩니다.
복제 프로세스에 대한 가시성
가시성을 제공하기 위해 3가지 메트릭을 제공하며 체크할 수 있습니다.
3가지 유형의 S3 이벤트로 복제 모니터링
모든 단일 객체는 이벤트를 발생시킬 수 있습니다.
예) test.jpg 파일이 15분 동안 복제되지 않으면 이벤트 발생
두 번째로 jpg 파일이 해당 버킷에 복제가 완료되면 이벤트 발생
발생한 이벤트는 SQS queue SNS topic등에 연결이 가능하고 필요에 따라서는 Lambda function도 실행시킬 수 있습니다.
후기
S3의 신기능을 비용 절감, 보안 및 접근, 데이터 관리의 카테고리를 나누어 알아보았습니다.
정의하지 않은 데이터의 보존 기간과 액세스가 증가함에 따라 자동으로 관리하는 서비스들이 릴리즈되고 뒷받침할 보안 서비스까지 알 수 있어서 좋았습니다.
설정도 정말 간단해서 비즈니스에 적용하는 것도 간단할 것 같다는 생각이 들었습니다.
앞으로도 사내 문화인 정보 발신에 따라서 많은 기사를 쓰고 싶다고 생각합니다. 읽어주셔서 감사합니다!!